Als Teil des Programmteams stellt sich Jakob Westhoff den Fragen von Mirko Hillert (Entwickler Akademie).
Mirko Hillert: Jakob, du warst Teil des Programmteams und hast auch das Konzept der JavaScript Days mitentwickelt. Was genau habt ihr in dem Programm versucht umzusetzen?
Jakob Westhoff: Wie du schon sagtest, sind React Days und JavaScript Days zwei verschieden Events. Zusätzlich dazu gibt es noch die Angular Days und die HTML5 Days. Das ist alles so ein Zusammenschluss von verschiedenen Themenbereichen, die sich alle im Bereich Frontend und JavaScript bewegen. Gemeinsam haben wir versucht, ein Programm auf die Beine zu stellen, bei dem aus allen Bereichen für jeden etwas dabei ist, sodass es irrelevant ist, ob man aus der .NET- oder aus der Java-Ecke kommt, oder welche Problemstellungen man auch immer hat. Wir haben versucht, alles in dem Programm unterzubringen. Einerseits haben wir die verschiedenen Frameworks, die beiden großen React und Angular. Andererseits haben wir aber auch Themen wie CSS und Design. Mit den HTML5 Days haben wir generell die Struktur von JavaScript-Applikationen, wie man sie zum Beispiel aufbaut, den Bereich Testing, aber auch Dinge wie Node.js abgedeckt. Wir haben versucht, das große Spektrum abzudecken, damit für jeden das Richtige dabei ist und sich jeder das für ihn Relevanteste heraussuchen kann.
Mirko Hillert: Gestern hast du die Einführung zu React gegeben. Es ist jetzt die Version 16 erschienen. Wie genau ist die Entwicklung in diesem Bereich?
Jakob Westhoff: Facebook ist da relativ aktiv, weil sie das selber auch sehr eifrig nutzen. Version 16 ist Ende des letzten Monats erschienen. Das war ein verhältnismäßig großer Schritt. Relativ lange im Vorfeld wurde daran gearbeitet. Die neue Version beinhaltet ein neues Kern-Rendering-System von React, namens Fiber.
React 16 kann ein großes Update in mehrere kleine Updates unterteilen.
Viele Probleme und Kleinigkeiten, bei denen das alte System an seine Grenzen stieß, sind mit Fiber jetzt mehr oder weniger vom Tisch. Das neue System kommt und der Weg für die Zukunft ist frei. Um mal ein Beispiel zu nennen: Das neue Sytem kann jetzt etwas, das das alte partout nicht gekonnt hätte. Es ist jetzt möglich, den Renderingprozess, der letztendlich die Seite updatet, in mehrere Teilschritte zu zerlegen. Das System kann es automatisch feststellen, wenn ein großes Update ansteht. Das System kann dann sagen, dass es das Update in mehrere kleine Updates teilt.
So ist nicht der komplette Thread im Browser blockiert. Der User merkt also nicht, dass etwas hakt oder irgendetwas passiert, sondern das ganze System bleibt responsive. Dieser Reconciler im Hintergrund ist in der Lage, ein Stück der Arbeit jetzt zu machen, den User dann wieder ein bisschen interagieren zu lassen und dann den Rest der Arbeit zu machen. Das ist insofern ein großer Schritt vorwärts, was den ganzen Seiten wirklich das Gefühl von deutlich mehr Geschwindigkeit verschafft. Es ist noch eine Menge mehr hinzugekommen, das wird sicherlich in Zukunft so verwendet werden. Im Moment sind viele der Features noch gar nicht so aktiv, aber diese Umstellung auf Version 16 wurde vollzogen, und es soll sichergestellt werden, dass dieser Übergang beziehungsweise diese Migration sauber verläuft. In der nächsten Zeit werden neue Systeme und neue Features dieses Kerns angeschaltet und entsprechend verwendet.
Mirko Hillert: Es gab einen großen Aufschrei in der Community bezüglich der Lizenzierung von React. Wie siehst du die Situation?
Jakob Westhoff: Es gab das Problem, dass Facebook eine relativ offene Open-Source-Lizenz für ihre Projekte hatte. Das bezog sich nicht nur auf React, sondern auf Dinge wie Flow, deren Typcheckersystem, das sie eigentlich für fast alle ihre Open-Source-Projekte verwendeten. Das ist eine Lizenz, die eine bestimmte Patentklausel beinhaltet. Diese besagt, dass einem Facebook bei einer Verletzung seiner Patente die Nutzungserlaubnis entziehen kann. Das war für viele ein großes Problem, weil das immer ein wenig wie ein Damoklesschwert über einem schwebte. Ganz nach dem Motto: „Vielleicht tue ich das ja irgendwie versehentlich.“ Oder Facebook kommt plötzlich auf die Idee, sich in einem Marktfeld breitzumachen, wo sie bisher noch nicht waren, und bekommt dort im Zweifel Patente zugesprochen. Dann habe ich drei Jahre Entwicklungszeit in meine React-Applikation gesteckt und müsste sie jetzt wegschmeißen, weil ich sie eigentlich nicht mehr benutzen darf.
Das ist natürlich relativ riskant, und daher kam der von dir erwähnte große Aufschrei. WordPress, einer der größten Vertreter, hat schlichtweg gesagt, sie möchten das nicht entscheiden und haben damit auch nichts zu tun, was die Leute nutzen. Somit veräußern sie, dass man keine WordPress-Plug-ins mehr einreichen darf, die in irgendeiner Form React benutzen, weil sie dieses Risiko nicht eingehen wollen. Sie wollen schlichtweg ihren Nutzern dieses Risiko nicht aufbürden.
Aufgrund dieses Aufschreis hat Facebook zurückgerudert und gesagt, sie stellen das jetzt unter eine normale, offene Open-Source-Lizenz und schmeißen diese Patentklausel raus. Somit konnte man es einfach benutzen – so ungefähr nach dem Motto: „Ignoriert das Problem, es ist alles in Ordnung.“ Schlussendlich ist das definitiv der richtige Schritt gewesen, um dieses Framework weiterhin voranzubringen.
Mirko Hillert: Welche Bedeutung haben denn die verschiedenen JavaScript-Frameworks für die modernen Applikationen heutzutage?
Jakob Westhoff: Moderne Applikationen, die wir mittlerweile im Browser schreiben, sind nicht mehr weit von nativen Applikationen entfernt. Es sind mittlerweile komplexe Stücke Software. Sowas möchte man nicht immer wieder auf der grünen Wiese beginnen. Man möchte sich nicht jedes Mal erneut überlegen, wie man vorgehen muss. Somit ist es gut, einen grundsätzlichen Baukasten zur Verfügung zu haben, nach dem man sich richten kann.
Sei das React, Angular, Vue.js oder eins der anderen zahlreichen Frameworks. Letztlich ist es irrelevant, welches man davon verwendet. Es ist von Vorteil, einen Bausatz zu haben, den man sich angucken kann und feststellt, dass sich schon mal jemand Gedanken dazu gemacht hat. Im Idealfall wird dieser von vielen Leuten verwendet, sodass man auch Probleme frühzeitig erkennt und diese vielleicht bereits aus der Welt geschafft sind. So kann man dann einfach darauf aufsetzen.
React, Angular, Vue.js – letztlich ist es irrelevant, welches Framework man verwendet.
Es ist also einerseits bequem für große Applikationen. Andererseits haben wir Entwickler, die aus allen möglichen Bereichen kommen. Sie kommen aus dem .NET-, dem Java- bzw. dem PHP-Umfeld oder sind teilweise auch reine JavaScript-Entwickler. Es gibt jedoch einfach eine unglaublich große Menge an Leuten, die mittlerweile JavaScript-Applikationen schreiben. Das ist irgendwie das i-Tüpfelchen im Web, das einfach benutzt wird. Für diese Entwickler ist es sehr angenehm, wenn sie irgendwo ein Framework haben, das ihnen sagt: „Hier ist die Dokumentation dazu. So strukturierst du deine Applikation. Das kannst du einsetzen und benutzen und dann funktioniert es auch. Du musst dir nicht alles in diesem Ökosystem wieder einzeln zusammen sammeln.“
Das ist auch etwas, was wir mit den React Days durch die verschiedenen Sessions versuchen. Ich habe die Einführung gemacht, dann hatten wir eine Session zu Redux, im Moment läuft eine Session zum Thema Progressiv Web Applications mit React. Hier werden nochmal viele verschiedene Komponenten ineinander verzahnt und gezeigt. React ist zum Beispiel eines dieser Frameworks, die eine nicht so strikte Vorgabe haben. Man kann sich dort die Teile zusammensuchen, die man gerne hätte. Deswegen ist es auch wichtig, dass wir hierher kommen und dann nochmal, die Komponenten zeigen, die man sich näher angucken möchte, da sie sehr gut zusammen funktionieren. So kann man den Leuten wieder eine Richtung geben und sagen „Hier, damit könntest du dich mal beschäftigen, und dann funktioniert das auch. Das macht dir das Leben leichter.“
Also ich sehe bei JavaScript-Frameworks ganz definitiv die Zukunft für ganz große Applikationen. Wir werden natürlich weiterhin kleinere Seiten haben, die hier und da mal ein Snippet JavaScript haben. Das ist auch völlig in Ordnung. Diese kleineren Seiten brauchen auch kein Framework, aber für eine große Applikation macht sich ein Framework schon ganz gut.
Mirko Hillert: Wir haben auf den JavaScript Days auch das Thema Node.js. Wie siehst du die Entwicklung von JavaScript im Backend?
Jakob Westhoff: Node.js ist schon längere Zeit ein heißes Thema. Am Anfang, als Node.js kam, wurde es noch ein wenig belächelt: Wer sollte denn Backend-Sachen in JavaScript schreiben? Mittlerweile gibt es viele große Firmen, die massive Backends in JavaScript geschrieben haben. Sei es PayPal, die einen großen Teil ihrer Logik in Node.js abbilden. Aber auch für andere Firmen wird das immer relevanter, wenn auch teilweise nur als kleines Nebenprodukt, was zum Beispiel WebSocket-Verbindungen und dergleichen behandelt. Das wird gerne mit Node.js gemacht, weil es relativ einfach ist und halbwegs performant funktioniert.
Es ist ein großer Schritt. Früher hatten sie Backend-Entwickler, und die sind jetzt irgendwie in das Thema JavaScript hineingewachsen. Mittlerweile kriegen wir immer mehr Entwickler, die Softwareentwicklung mit JavaScript lernen. Das heißt, wir haben plötzlich auch den umgekehrten Weg. Wir haben den Frontend-Entwickler, der noch nie Backend gemacht hat, dem plötzlich gesagt wird: „Kannst du mal ein bisschen Backend machen?“. Für den ist es von großem Vorteil, wenn er jetzt eine ihm schon bekannte Umgebung wiederfindet, die er dann weiterentwickeln kann. Er muss nicht eine komplett unbekannte Sprache lernen oder sich mit absolut neuen Prinzipien vertraut machen.
Ein großer weiterer Vorteil ist, dass wir viele Libraries wiederverwenden können. Auch wieder eine Sache zum Thema React: Wir können zum Beispiel eine React-Applikation komplett auf dem Server rendern. Das heißt, wir können schon die vorgerenderte Seite dem Kleinen rausreichen und sagen: „Hier das ist was, das kannst du schon mal nehmen. Das sieht schon mal sinnvoll aus.“ Den ganzen dynamischen Teil werfe ich dann nur noch schnell oben drauf. Das macht Antwortzeiten schneller, das erlaubt Durchsuchbarkeit von Suchmaschinen im größeren und sinnvolleren Umfang und macht das Ganze interessanter. Dadurch kommt immer mehr JavaScript ins Backend, weil wir letztlich mehr oder weniger dazu tendieren, an einigen Stellen die gleichen Libraries zu benutzen.
Wir haben natürlich immer noch große Server im Backend, seien das irgendwelche Java Backends, PHP Backends oder .NET Backends, mit denen wir reden. Das zu haben, ist auch vollkommen legitim. Es ist schön, diesen Knotenpunkt beziehungsweise diese Brücke zu haben, die auch sehr aktiv weiterentwickelt wird und die man dann genau in solchen Fällen benutzen kann.
Mirko Hillert: Dankeschön für das Interview, Jakob.
Interviewt von: Mirko Hillert
Mirko Hillert verantwortet seit 2007 als Leiter der Entwickler Akademie den Trainingsbereich bei Software & Support Media. Er studierte Betriebswirtschaft an der Westsächsischen Hochschule Zwickau und der Universidad Valencia sowie Marketing an der Westfälischen Wilhelms-Universität Münster. Als ehemaliger Dozent und Ausbilder für Managementprozesse treibt er seit vielen Jahren die fundierte Aus- und Weiterbildung von Entwicklern und Softwarearchitekten im IT-Markt voran, unter anderem mit innovativen Eventformaten und hochwertigen Trainingsinhalten.